// // get的基础自定义
// import HOST from "./HOST";
// // import { message, notification } from "antd";
// // import { Message, Loading, Notification } from "element-ui";
// import Vue from "vue";
// // import { Message } from "view-design";
// import qs from "qs"; // 请求参数处理库
// import axios from "axios"; // 请求库
// import { ResponseModel, returnStatusType } from "../models/common/resPonse";
// import { plainToClass } from "class-transformer";
// import Cookie from "js-cookie";
// import { ErrRes, ErrorType, ErrData } from "../models/common/errRes";
// import { Message } from "view-design";
// const message =Vue.prototype.$Message as Message
// // import { ElLoadingComponent } from "element-ui/types/loading";



// export class MyHttp {
//   loadingdelay = 2500; // 加载效果延迟显示时间
//   isShowAjaxChildEff = true; // 是否显示子项ajax效果
//   accesstoken: string | undefined; //token证书
//   loadingInstance: ElLoadingComponent | undefined; //loading实例
//   // loadingKey: string = "loading";
//   constructor() {
//     axios.defaults.headers.post["Content-Type"] =
//       "application/x-www-form-urlencoded"; // 请求头

//     axios.defaults.baseURL = HOST;
//     this.setToken();
//   }
//   setHost(HOST: string) {
//     axios.defaults.baseURL = HOST; // url公共前缀
//   }
//   getHost() {
//     return axios.defaults.baseURL; // url公共前缀
//   }
//   setToken(token?: string) {
//     // 设置token证书
//     if (token) {
//       window.localStorage.setItem("accesstoken", token);
//       axios.defaults.headers.Authorization = `Bearer ${this.accesstoken}`;
//       this.accesstoken = token;
//     } else {
//       const accesstoken = window.localStorage.getItem("accesstoken") || "";
//       console.log("accesstoken", accesstoken);

//       if (accesstoken) {
//         axios.defaults.headers.Authorization = `Bearer ${this.accesstoken}`;
//         this.accesstoken = accesstoken;
//       }
//     }
//   }
//   resProcessing<DataClass>(res: ResponseModel<DataClass>) {
//     // 自定义业务返回信息判断
//     // let data = res.data;

//     if (res.status === returnStatusType.FAIL) {
//       console.log("====================================");
//       console.log(res);
//       console.log("====================================");
//       Vue.prototype.$Message({
//         type: "error",
//         message: res.mes,
//         duration: 2000
//       });
//     }
//   }
//   resArryProcessing<DataClass>(resArry: ResponseModel<DataClass>[]) {
//     // 自定义业务返回信息数组判断
//     let errMes: string | undefined; // 业务异常信息
//     resArry.forEach((item, index) => {
//       if (item.code === -1) {
//         if (index > 0) {
//           errMes += "/n";
//         }
//         errMes += item.mes;
//       }
//     });
//     if (errMes) {
//       message.error({
//         content: errMes,
//         duration: 2
//       });
//     }
//   }
//   errProcessing(err: ErrData) {
//     // 异常处理函数
//     console.info("错误", err.error);
//     if (err && err.statusCode === 500) {
//       message.error({
//         content: "请求失败请检查网络",
//         duration: 2
//       });
     
//     } else if (
//       err.error === ErrorType.UNAUTHORIZED ||
//       err.error === ErrorType.BADREQUEST
//     ) {
//       if (err.message && typeof err.message != "string") {
//         let mes = `<div>`;
//         err.message.map(item => {
//           mes + `<p>${item}</p>`;
//         });
//         mes = mes + `</div>`;
//         Notification.error({
//           title: "错误",
//           message: mes,
//           dangerouslyUseHTMLString: true,
//           duration: 2000
//         });


//         message.error({
//           content: "操作失败！",
//           duration: 2
//         });
//       } else {

//         message.error({
//           content: err.message,
//           duration: 2
//         });
       
//       }
//     } else {
//       message.error({
//         content: "请求失败没返回",
//         duration: 2
//       });
      
//     }
//   }
//   get<DataClass>(
//     url: string,
//     returnDataClass: new () => DataClass,
//     info: object | null | undefined = {},
//     host?: string,
//     isShowLoading = true,
//     isDisposeRes = true
//   ): Promise<ResponseModel<DataClass>> {
//     // get请求

//     return new Promise((resolve, reject) => {
//       // let delay: NodeJS.Timeout;
//       if (isShowLoading && this.isShowAjaxChildEff) {
//         // delay = setTimeout(
//         this.loadingInstance = message.loading();

//         // ,
//         //   this.loadingdelay
//         // );
//       }
//       // get请求
//       axios
//         .get<ResponseModel<DataClass>>(url, {
//           params: info,
//           baseURL: host,
//           headers: {
//             Authorization: `Bearer ${this.accesstoken}`
//           }
//         })
//         .then(res => {
//           console.log("err", res);

//           let responseData: ResponseModel<DataClass>; // 服务端返回数据
//           if (res.data) {
//             let info = res.data;
//             responseData = plainToClass(ResponseModel, info, {
//               excludeExtraneousValues: true
//             }); // json转DataClass类型对象

//             if (info.data) {
//               responseData.data = plainToClass(returnDataClass, info.data, {
//                 excludeExtraneousValues: true
//               }); // json转DataClass类型对象
//               console.log("数据", responseData.data);
//             } else {
//               responseData.data = new returnDataClass();
//               console.log(`后台返回${returnDataClass.name}为空`);
//             }
//           } else {
//             // 没数据返回默认数据
//             responseData = new ResponseModel();
//             responseData.data = new returnDataClass();
//             console.log(`后台返回${ResponseModel.name}为空`);
//           }
//           if (
//             isShowLoading &&
//             this.isShowAjaxChildEff &&
//             this.loadingInstance
//           ) {
//             // clearTimeout(delay);
//             this.loadingInstance.close();
//           }

//           if (isDisposeRes && this.isShowAjaxChildEff) {
//             this.resProcessing(responseData);
//           }

//           resolve(responseData);
//         })
//         .catch((err: ErrRes) => {
//           if (
//             isShowLoading &&
//             this.isShowAjaxChildEff &&
//             this.loadingInstance
//           ) {
//             // clearTimeout(delay);
//             this.loadingInstance.close();
//           }
//           console.log("err", err.response);

//           this.errProcessing(err.response.data); // 错误处理
//           reject(err);
//         });
//     });
//   }
//   post<DataClass>(
//     url: string,
//     returnDataClass: new () => DataClass,
//     info: object | null | undefined = {},
//     host?: string,
//     isShowLoading = true,
//     isDisposeRes = true
//   ): Promise<ResponseModel<DataClass>> {
//     // post请求
//     return new Promise((resolve, reject) => {
//       // let delay: NodeJS.Timeout;
//       if (isShowLoading && this.isShowAjaxChildEff) {
//         // delay = setTimeout(
//         // Message.destroy();
//         this.loadingInstance = Loading.service({});
//         // ,this.loadingdelay
//         // );
//       }

//       // get请求
//       axios
//         .post<ResponseModel<DataClass>>(url, info, {
//           // qs序列化参数 做成stringformdate格式
//           headers: {
//             // 头部配置
//             Accept: "application/json, text/javascript, */*; q=0.01",
//             // "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8",
//             Authorization: `Bearer ${this.accesstoken}`
//           },
//           baseURL: host
//           // params: info,
//           // paramsSerializer: function(params) {
//           //     return Qs.stringify(params, { arrayFormat: 'brackets' })
//           // },
//         })
//         .then(res => {
//           console.log("err", res);
//           let responseData: ResponseModel<DataClass>; // 服务端返回数据

//           if (res.data) {
//             let info = res.data;
//             responseData = plainToClass(ResponseModel, info, {
//               excludeExtraneousValues: true
//             }); // json转DataClass类型对象
//             if (info.data) {
//               responseData.data = plainToClass(returnDataClass, info.data, {
//                 excludeExtraneousValues: true
//               }); // json转DataClass类型对象
//             }
//           } else {
//             // 没数据返回默认数据
//             responseData = new ResponseModel();
//             responseData.data = new returnDataClass();
//           }
//           if (
//             isShowLoading &&
//             this.isShowAjaxChildEff &&
//             this.loadingInstance
//           ) {
//             // clearTimeout(delay);
//             this.loadingInstance.close();
//           }

//           if (isDisposeRes && this.isShowAjaxChildEff) {
//             this.resProcessing(responseData);
//           }

//           resolve(responseData);
//         })
//         .catch((err: ErrRes) => {
//           if (
//             isShowLoading &&
//             this.isShowAjaxChildEff &&
//             this.loadingInstance
//           ) {
//             // clearTimeout(delay);
//             this.loadingInstance.close();
//           }
//           console.log("err", err.response);
//           this.errProcessing(err.response.data);
//           reject(err);
//         });
//     });
//   }
//   formAjax<DataClass>(
//     url: string,
//     returnDataClass: new () => DataClass,
//     formData: FormData,
//     host?: string,
//     isShowLoading = true,
//     isDisposeRes = true
//   ): Promise<ResponseModel<DataClass>> {
//     return new Promise((resolve, reject) => {
//       // let delay: NodeJS.Timeout;
//       if (isShowLoading && this.isShowAjaxChildEff) {
//         // delay = setTimeout(
//         // Message.destroy();
//         this.loadingInstance = Loading.service({});
//         // ,this.loadingdelay
//         // );
//       }

//       // post请求
//       axios
//         .post<ResponseModel<DataClass>>(url, formData, {
//           // qs序列化参数 做成stringformdate格式
//           headers: {
//             // 头部配置
//             "Content-Type": "multipart/form-data",
//             Authorization: `Bearer ${this.accesstoken}`
//           },
//           baseURL: host

//           // params: info,
//           // paramsSerializer: function(params) {
//           //     return Qs.stringify(params, { arrayFormat: 'brackets' })
//           // },
//         })
//         .then(res => {
//           let responseData: ResponseModel<DataClass>; // 服务端返回数据

//           if (res.data) {
//             let info = res.data;
//             responseData = plainToClass(ResponseModel, info, {
//               excludeExtraneousValues: true
//             }); // json转DataClass类型对象
//             if (info.data) {
//               responseData.data = plainToClass(returnDataClass, info.data, {
//                 excludeExtraneousValues: true
//               }); // json转DataClass类型对象
//             }
//           } else {
//             // 没数据返回默认数据
//             responseData = new ResponseModel();
//             responseData.data = new returnDataClass();
//           }
//           if (
//             isShowLoading &&
//             this.isShowAjaxChildEff &&
//             this.loadingInstance
//           ) {
//             // clearTimeout(delay);
//             this.loadingInstance.close();
//           }

//           if (isDisposeRes && this.isShowAjaxChildEff) {
//             this.resProcessing(responseData);
//           }

//           resolve(responseData);
//         })
//         .catch(err => {
//           if (
//             isShowLoading &&
//             this.isShowAjaxChildEff &&
//             this.loadingInstance
//           ) {
//             // clearTimeout(delay);
//             this.loadingInstance.close();
//           }
//           this.errProcessing(err);
//           reject(err);
//         });
//     });
//   }
//   getmutidata(promiseArry: Array<Promise<any>>) {
//     // let delay: NodeJS.Timeout;
//     this.isShowAjaxChildEff = false;
//     // delay = setTimeout(
//     this.loadingInstance = Loading.service({});
//     // ,this.loadingdelay
//     // );

//     Promise.all(promiseArry)
//       .then(resArry => {
//         console.log("请求成功返回", resArry);
//         // clearTimeout(delay);
//       })
//       .catch(errArry => {
//         console.log("请求成功返回", errArry);
//         // clearTimeout(delay);
//       });
//   }
// }

// export default new MyHttp();
